package com.unionfetch.content_home.contract

import com.unionfetch.content_home.bean.SumsubAccessToken
import com.unionfetch.content_home.bean.request.UploadKYCFile
import com.unionftech.common.base.mvp.IBasePresenter
import com.unionftech.common.base.mvp.IBaseView
import com.unionftech.common.base.mvp.impl.IBaseCallBack
import com.unionftech.common.bean.ResponseResult
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.Header

interface KYCContract {

    interface IUploadPoiView : IBaseView {
        fun handleUploadPoi(responseResult: ResponseResult<Any?>)
    }

    interface IUploadPoaView : IBaseView {
        fun handleUploadPoa(responseResult: ResponseResult<Any?>)
    }

    interface IKYCPresenter : IBasePresenter {
        /**
         * 手动上传poi证明
         */
        fun uploadPoi(token: String, kycFile: UploadKYCFile, isSupplement: Boolean)

        /**
         * 手动上传poa证明
         */
        fun uploadPoa(token: String, kycFile: UploadKYCFile, isSupplement: Boolean)
    }

    interface IKYCModel {
        /**
         * 重置sumsub 身份认证
         */
        fun resetSumsub(
            token: String, userId: String, callBack: IBaseCallBack<ResponseResult<Any?>>
        )

        /**
         * 重置sumsub 地址认证
         */
        fun resetSumsubPoa(
            token: String, userId: String, callBack: IBaseCallBack<ResponseResult<Any?>>
        )

        /**
         * 获取sumsub 身份认证token
         */
        fun getSumsubPoiToken(
            token: String,
            userId: String,
            callBack: IBaseCallBack<ResponseResult<SumsubAccessToken>>
        )

        /**
         * 获取sumsub 地址认证token
         */
        fun getSumsubPoaToken(
            token: String,
            userId: String,
            callBack: IBaseCallBack<ResponseResult<SumsubAccessToken>>
        )

        /**
         * 通知服务器更新sumsub 身份认证结果
         * @param isSupplement 是否是补料
         */
        fun notifyPoiResult(
            @Header("Authorization") token: String,
            userId: String,
            isSupplement: Boolean,
            callBack: IBaseCallBack<ResponseResult<Any?>>
        )

        /**
         * 通知服务器更新sumsub 地址认证结果
         * @param isSupplement 是否是补料
         */
        fun notifyPoaResult(
            @Header("Authorization") token: String,
            userId: String,
            isSupplement: Boolean,
            callBack: IBaseCallBack<ResponseResult<Any?>>
        )

        /**
         * 手动上传poi证明
         */
        fun uploadPoi(
            token: String,
            kycFile: UploadKYCFile,
            isSupplement: Boolean,
            callBack: IBaseCallBack<ResponseResult<Any?>>
        )

        /**
         * 手动上传poa证明
         */
        fun uploadPoa(
            token: String,
            kycFile: UploadKYCFile,
            isSupplement: Boolean,
            callBack: IBaseCallBack<ResponseResult<Any?>>
        )
    }
}